<?php
require_once 'BaseController.php';

/**
 * 【PC版】物件検索(地域・沿線・駅選択) コントローラ
 */
class Renew_AreaController extends Renew_BaseController
{

    /**
     * メインアクション
     */
    public function indexAction()
    {
        $params = $this->getParameters();

        // こだわり検索、タイプ検索のURL拡張
        $this->setOtherConditionUrlReplace($params);

        $cat = $params['Category'];
        if (empty($cat)) $cat = 'index';

        $area = $params['Area'];

        if ($cat == 'index')
        {
            // テンプレート用パラメータ作成（市区町村選択）
            $this->makeTemplateParams1($area);
        }
        else if ($cat == 'line')
        {
            $rail = $params['RailCd'];
            if ($rail == '')
            {
                $cat = 'route';
                // テンプレート用パラメータ作成（沿線選択）
                $this->makeTemplateParams2($area);
            }
            else
            {
                // テンプレート用パラメータ作成（駅選択）
                $this->makeTemplateParams3($area, $rail);
            }
        }

        $this->displayBody2($cat);
    }

    /**
     * こだわり検索、タイプ検索のURL拡張
     *
     * @param unknown $params リクエストパラメータ
     */
    public function setOtherConditionUrlReplace($params)
    {
        // こだわり、タイプのURLルーティングのための処理
        // / ex-> tokyo/kodawari/1/ から　kodawari, 1を取り出して
        // station リンクに引き継ぐ tokyo/station/kodawari/1/のように
        $kodawari = "";
        $kodawaricd = "";

        $reconurl = "/";
        for ($i = 0; $i < count($params['UrlParts']); $i++)
        {
            $part = $params['UrlParts'][$i];

            // {$stationurl}

            // とりあえずハードコードでこだわり条件判断
            if ($part == "apart" || $part == "mansion" || $part == "kodate" || $part == "kodawari")
            {
                $kodawari = $part;

                if ($part == 'kodawari')
                {
                    $i++;
                    $kodawaricd = $params['UrlParts'][$i];
                }
                else
                {
                    $kodawaricd = $part;
                }
            }
            else // こだわり条件以外はURL再構成
            {
                if ($part != "station") $reconurl = $reconurl . $params['UrlParts'][$i] . "/";
            }
        }
        // こだわり、タイプのURLルーティングのための処理 END

        // 路線から選択のリンクを再構築
        $stationurl = $reconurl . "station/";
        $areaurl = $reconurl;
        $kodawarisuffix = "/";
        if ($kodawari != "")
        {
            $stationurl = $stationurl . $kodawari . "/";
            $areaurl = $areaurl . $kodawari . "/";
            $kodawarisuffix = $kodawarisuffix . $kodawari . "/";

            if ($kodawari == "kodawari")
            {
                $stationurl = $stationurl . $kodawaricd . "/";
                $areaurl = $areaurl . $kodawaricd . "/";
                $kodawarisuffix = $kodawarisuffix . $kodawaricd . "/";
            }
        }

        $this->_data['stationurl'] = $stationurl;
        $this->_data['areaurl'] = $areaurl;
        $this->_data['kodawarisuffix'] = $kodawarisuffix;
        $this->_data['kodawaricd'] = $kodawaricd;
    }

    /**
     * テンプレート用パラメータ作成（市区町村選択）
     *
     * @param unknown $area 都道府県コード名
     */
    private function makeTemplateParams1($area)
    {
        $area_code = $this->getPrefCode($area);
        $this->getPrefData($area_code);

        $params = array();
        $params['PrefCd'][] = $area_code;
        $data = array();

        $model = new Search_Model_Selsikucyoson();

        $data['selcity'] = $model->getShikucyosonData($params);

        $model->convertShikucyosonData($data, '1');

        $this->_data['Mapping'] = $data['Mapping'];
        $this->_data['Mapping_area'] = $area;
        $this->_data['Mapping_area_code'] = $area_code;

        /*
         * $data = array(); Apm_Seo::generatePopEkiBlock($data, $params, array(), 5, 1);
         * $this->_data['CrossEki'] = $data['CrossEki'];
         */

        $data = array();
        Apm_Seo::generateKodawariBlock($data, $params, array(), 1);
        $this->_data['CrossKodawari'] = $data['CrossKodawari'];

        // こだわり一覧を固定表示用
        // $searchmodel = new Renew_Model_Search();
        // $this->_data['CrossKodawari'] = $searchmodel->getKodawariList();

        $data = array();
        Apm_Seo::generateTypeBlock($data, $params, array(), 1);
        $this->_data['CrossType'] = $data['CrossType'];

        /*
         * $data = array(); Apm_Seo::generatePopEnsenBlock($data, $params, array(), 5, 1);
         * $this->_data['CrossEnsen'] = $data['CrossEnsen'];
         */

        $this->_data['Shinchaku'] = $this->getShinchaku($area_code);

        // 近隣エリア
        $pref = $this->_data['PrefName'];
        $nearList = array();
        if ($pref !== "hokkaido")
        {
            foreach (Apm_Config_Search::$AREA_GROUP_LIST as $key => $val)
            {
                if (in_array($pref, $val))
                {
                    foreach ($val as $prefEN)
                    {
                        $nearList[$prefEN] = $this->getPrefNameJP($this->getPrefCode($prefEN));
                    }
                    $this->_data['nearList'] = $nearList;
                    break;
                }
            }
        }
    }

    /**
     * テンプレート用パラメータ作成（沿線選択）
     *
     * @param unknown $area 都道府県コード名
     */
    private function makeTemplateParams2($area)
    {
        $area_code = $this->getPrefCode($area);
        $this->getPrefData($area_code);

        $model = new Search_Model_Selensen();
        $params = array();
        $params['PrefCd'][] = $area_code;

        $data = array();
        $data["selensen"] = $model->getEnsenDataByMulti($params);
        $model->convertEnsenDataByMulti($data);

        $this->_data['Mapping'] = $data["Mapping"];
        $this->_data['Mapping_area'] = $area;

        $data = array();
        Apm_Seo::generatePopEkiBlock($data, $params, array(), 10, 1);
        $this->_data['CrossEki'] = $data['CrossEki'];

        // 人気街（都道府県ごと）
        $choudata = array();
        $choudata = Apm_Seo::getPopChou($params, 10);
        $chou = array();
        foreach ($choudata as $d)
        {
            $d['PrefName'] = $this->getPrefName($d['TODOUFUKEN_CD']);
            $chou[] = $d;
        }
        $this->_data['CrossChou'] = $chou;

        // 簡単検索に保存されているクッキーを表示される
        $simpleEki = $_COOKIE['simpleEki'];
        if (isset($simpleEki) && !empty($simpleEki) && $simpleEki !== '')
        {
            $vals = explode('|', $simpleEki);
            $eki = $vals[0];

            $vals2 = explode('-', $vals[1]);
            $pref = $vals2[0];

            if ($pref == $area_code)
            {
                $this->_data['throughEki'] = $eki;

                // 路線
                $temp = explode('.', $vals2[1]);
                $rel = array();
                foreach ($temp as $s)
                {
                    $rel[] = substr($s, 0, 4);
                }
                $ensens = implode(',', $rel);
                $this->_data['throughEnsen'] = $model->getRailDataByRailCd($pref, $ensens);
            }
        }
    }

    /**
     * テンプレート用パラメータ作成（駅選択）
     *
     * @param unknown $area 都道府県コード名
     * @param unknown $rail 沿線コード
     */
    private function makeTemplateParams3($area, $rail)
    {
        $area_code = $this->getPrefCode($area);
        $this->getPrefData($area_code);

        $model = new Search_Model_Seleki();
        $params = array();
        $params['PrefCd'][] = $area_code;
        $params['RailCd'][] = $rail;

        $data = array();
        $data["seleki"] = $model->getEkiData($params);
        $model->convertEkiData($data);

        // 路線説明
        $modelSen = new Search_Model_Selensen();
        $setsumei = $modelSen->getEnsenSetsumei($rail);

        $this->_data['hoge'] = __var_dump($data);
        $this->_data['Mapping'] = $data["Mapping"];

        $eki = $data["seleki"][0];
        $this->_data['Mapping_area'] = $area;
        $this->_data['Mapping_ensen_code'] = $eki['ENSEN_CD'];
        $this->_data['Mapping_ensen_name'] = $eki['ENSEN_NAME'];
        $this->_data['Mapping_ensen_setsumei'] = $setsumei[0]['M02_SETSUMEI_HEADLINE'];

        // スタート～エンド駅取得
        $startEki = $eki['EKI_NAME']; // スタート駅
        $endEki = $data["seleki"][sizeof($data["seleki"]) - 1]['EKI_NAME']; // エンド駅
        $this->_data['START_END_EKI'] = '（' . $startEki . '～' . $endEki . '）';
        // スタート～エンド駅取得

        // ★★★乗り換えるデータを取得
        $transfer = $data['TRANSFER_CD'];
        // ★★★乗り換えるデータを取得

        $data = array();
        Apm_Seo::generateEnsenAreaBlock($data, $params, 'station_2', array());
        $this->_data['EnsenArea'] = $data['EnsenArea'];

        $data = array();
        Apm_Seo::generateOtherEnsenBlock($data, $params, 'station_2', array());
        $this->_data['OtherEnsen'] = $data['OtherEnsen'];

        // ★★★乗り換えるデータを取得
        if (isset($transfer) && $transfer != '')
        {
            $ensenmodel = new Search_Model_Selensen();
            $ensenparams = array();
            // $ensenparams['PrefCd'][] = $area_code;
            $ensenparams['transferCd'] = $transfer;
            $ensenparams['ensenCd'] = $eki['ENSEN_CD'];

            $ensendata = array();
            $ensendata["selensen"] = $ensenmodel->getEnsenDataByMulti($ensenparams);
            $ensenmodel->convertEnsenDataByMulti($ensendata);
            $this->_data['transfer'] = $ensendata['Mapping'];
        }
        // ★★★乗り換えるデータを取得
    }

    /**
     * 都道府県情報取得
     *
     * @param unknown $pref_code 都道府県コード
     */
    public function getPrefData($pref_code)
    {
        $model = new Search_Model_Selareasearch();
        $this->_data['PrefInfo'] = $model->getSimpleArea($pref_code);
        $this->_data['PrefName'] = $this->getPrefName($pref_code);
        $jp = $this->getPrefNameJP($pref_code);
        $this->_data['PrefNameJP'] = $jp;
        $this->_data['PrefNameJPWithoutPostfix'] = $this->getPrefNameWithoutPostfix($jp);
    }

    /**
     * 新着物件取得
     *
     * @param unknown $pref_code 都道府県コード
     */
    private function getShinchaku($pref_code)
    {
        $model = new Renew_Model_Shinchaku();
        return $model->getShinchakuBlockData(6, $pref_code);
    }

    /**
     * SEO対策用のmetaタグに配置する文章を設定
     */
    protected function setSeoMeta()
    {
        $params = $this->getParameters();

        $title = '賃貸マンション・アパートの賃貸情報 【アパマンショップ】';
        $description = '賃貸・賃貸住宅の情報ならアパマンショップネットワーク。賃貸マンション・アパートなど、';
        $keywords = '';
        // alternateタグ
        $page_url = '';

        $kodawariName = '';

        // その他の検索(こだわり)の場合
        for ($i = 0; $i < count($params['UrlParts']); $i++)
        {
            $part = $params['UrlParts'][$i];
            if ($part == 'kodawari')
            {
                $kodawariName = Apm_Config_Search::$KODAWARI_ID_STR_LIST[$params['UrlParts'][$i + 1]] . 'の';
                break;
            }
        }

        // 駅選択画面
        if (array_key_exists('hoge', $this->_data))
        {
            $word = $this->_data['Mapping_ensen_name'];

            $title = $word . "の沿線から賃貸物件を探す 【アパマンショップ】";
            $description = $word . "のお部屋を探すなら、不動産情報が満載のアパマンショップネットワーク。賃貸マンション・アパートなど、";
            $keywords = $word . ",賃貸,";

            // 通常検索の場合のみ
            if (empty($kodawariName))
            {
                $page_url = 'sp/' . $params['Area'] . '/' . $params['RailCd'] . '/';
            }
        }
        else
        {
            $word = $this->_data['PrefNameJPWithoutPostfix'];

            // 沿線選択画面
            if ($params['Category'] == 'line')
            {
                $title = $word . "の沿線から" . $kodawariName . "賃貸物件を探す 【アパマンショップ】";
                $description = $word . "の沿線で" . $kodawariName . "お部屋を探すなら、不動産情報が満載のアパマンショップネットワーク。賃貸マンション・アパートなど、";
                $keywords = $word . " 沿線,";

                // 通常検索の場合のみ
                if (empty($kodawariName))
                {
                    $page_url = 'sp/' . $params['Area'] . '/station/';
                }
            }
            // 地域選択画面
            else
            {
                $title = $word . "の" . $kodawariName . "賃貸物件を探す 【アパマンショップ】";
                $description = $word . "で" . $kodawariName . "お部屋を探すなら、不動産情報が満載のアパマンショップネットワーク。賃貸マンション・アパートなど、";
                $keywords = $word . " 賃貸,";

                // 通常検索の場合のみ
                if (empty($kodawariName))
                {
                    $page_url = 'sp/' . $params['Area'] . '/';
                }
            }
        }

        $this->_meta_title = $title;
        $this->_meta_description = $description;
        $this->_meta_keywords = $keywords;
        $this->_alternate_url = $page_url;
    }

}
?>
